The prevalence of multi-core system-on-a-chip (SOC) is increasing. A typical multi-core SOC includes multiple processing cores that share a memory space. A processing core can be a variety of processing devices, such as a microprocessor, a digital signal processor (DSP), a central processing unit (CPU), or a processing core, among others, which are all referred to as processors. The shared memory can also take a variety of forms, such as flash or dynamic random access memory (DRAM), among others. The shared memory is often divided into multiple physical blocks of memory. Each of the multiple processing cores accesses the shared memory through a shared memory controller. The shared memory controller regulates the flow of data among the various processing cores and the multiple physical blocks of memory. The shared memory controller is often a bottleneck for SOC performance.